﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BLL.DTO.Propiedad;
using DAL.Entities;

namespace BLL.Mappers
{
    public class PropiedadMapper
    {
        #region [ToDTO]
        public static PropiedadDTO ToDTO(Propiedad entity)
        {
            return new PropiedadDTO()
            {
                IdPropiedad = entity.IPRO_PK,
                IdTipoPropiedad = entity.ITPRO_FK,
                RutUsuario = entity.IPER_RUT_FK,
                TipoPersonaUsuario = entity.ITPER_FK,
                Direccion = entity.VPRO_DIRECCION,
                NumeroPropiedad = entity.IPRO_NUMERO,
                Terreno = entity.IPRO_TERRENO,
                FechaRegistro = entity.DPRO_FECHA_REGISTRO,
                SuperficieConstruida = entity.IPRO_SUPERFICIE,
                IdComuna = entity.ICOM_FK,
                PrecioUF = entity.IPRO_PRECIO_UF
            };
        }

        public static List<PropiedadDTO> ToDTO(List<Propiedad> entities)
        {
            return entities.Select(e => ToDTO(e)).ToList();
        }
        #endregion

        #region [ToInfoDTO]

        public static PropiedadInfoDTO ToInfoDTO(Propiedad entity)
        {
            return new PropiedadInfoDTO()
            {
                Direccion = entity.VPRO_DIRECCION,
                IdComuna = entity.ICOM_FK,
                SuperficieConstruida = entity.IPRO_SUPERFICIE,
                Terreno = entity.IPRO_TERRENO
            };
        }

        public static List<PropiedadInfoDTO> ToInfoDTO(List<Propiedad> entities)
        {
            return entities.Select(e => ToInfoDTO(e)).ToList();
        }

        #endregion

        #region [ToEntity]

        public static Propiedad ToEntity(PropiedadDTO dto)
        {
            return new Propiedad()
            {
                ITPRO_FK = dto.IdTipoPropiedad,
                IPER_RUT_FK = dto.RutUsuario,
                ITPER_FK = dto.TipoPersonaUsuario,
                ICOM_FK = dto.IdComuna,
                VPRO_DIRECCION = dto.Direccion,
                IPRO_NUMERO = dto.NumeroPropiedad,
                IPRO_TERRENO = dto.Terreno,
                DPRO_FECHA_REGISTRO = DateTime.Now,
                IPRO_SUPERFICIE = dto.SuperficieConstruida,
                BPRO_ESTADO = true,
                IPRO_ASIGNADO = null
            };
        }


        public static List<Propiedad> ToEntity(List<PropiedadDTO> dtos)
        {
            return dtos.Select(d => ToEntity(d)).ToList();
        }

        #endregion
    }
}
